{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "<small>\n",
    "Copyright (c) 2017 Andrew Glassner\n",
    "\n",
    "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n",
    "\n",
    "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n",
    "\n",
    "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
    "</small>\n",
    "\n",
    "\n",
    "\n",
    "# Deep Learning From Basics to Practice\n",
    "## by Andrew Glassner, https://dlbasics.com, http://glassner.com\n",
    "------\n",
    "## Chapter 16: Feed-forward Networks\n",
    "\n",
    "This notebook is provided as a “behind-the-scenes” look at code used to make some of the figures in this chapter. It is still in the hacked-together form used to develop the figures, and is only lightly commented."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import math\n",
    "import seaborn as sns ; sns.set()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "# Make a File_Helper for saving and loading files.\n",
    "\n",
    "save_files = True\n",
    "\n",
    "import os, sys, inspect\n",
    "current_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))\n",
    "sys.path.insert(0, os.path.dirname(current_dir)) # path to parent dir\n",
    "from DLBasics_Utilities import File_Helper\n",
    "file_helper = File_Helper(save_files)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Height of a Gaussian (mu, sigma-squared) at x\n",
    "def gaussian(x, mu, sigma2):\n",
    "    s2 = 2*sigma2\n",
    "    f = 1/math.sqrt(math.pi * s2)\n",
    "    g = np.power((x-mu), 2)/s2\n",
    "    return f * np.exp(-g)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def make_uniform_figure():\n",
    "    extent = .1\n",
    "    plt_blue = '#4d74ae'  # matplotlib default blue\n",
    "\n",
    "    plt.plot([-extent, -0.05],[0,0], c=plt_blue)\n",
    "    plt.scatter([-.05],[0], s=130, facecolors='white', edgecolors=plt_blue, lw=2, zorder=10)\n",
    "    plt.scatter([-.05],[10], s=130, c=plt_blue)\n",
    "    plt.plot([-.05, .05],[10,10], c=plt_blue)\n",
    "    plt.scatter([.05],[10], s=130, c=plt_blue)\n",
    "    plt.scatter([.05],[0], s=130, facecolors='white', edgecolors=plt_blue, lw=2, zorder=10)\n",
    "    plt.plot([0.05, extent],[0,0], c=plt_blue)\n",
    "\n",
    "    plt.xlim(-extent, extent)\n",
    "    plt.ylim(-.5, 10.5)\n",
    "    file_helper.save_figure('uniform-init')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nfPHFF2PChAkREVFdXd1uTjds2BAbN27c6XWb6X3ynLXTTjstHnvssbb7tm/fHqtXr7aOERGdm7UP\nkse6Vnrnwa2gAAAChklEQVTddddd1+k974aGhoaYP39+HHXUUbFu3bq4/vrr46KLLmoLgLfffjuy\nLGv3r7qIiDfeeCMee+yxuOyyy9puGzlyZHzjG9+I0tLS2H///eOmm26KiIivfOUr3fFSSFxnZm34\n8OHxxBNPxIsvvhijRo2Khx56KJ588sm48cYbY7/99ostW7bEt771rRg1alRERNx2222xYsWK+Lu/\n+7sOs0rPV1ZWFhs2bIj7778/PvzhD8dLL70U8+bNi6uuuioOP/zwqKuri9LS0igrK4uDDz447rnn\nnnjzzTdj+PDhcdddd8WKFSvi+uuvj7Kyshg0aFDMmTMnBg0aFCUlJXHttdfGEUccEZ/5zGf29Msk\nAXnO2po1a+KBBx6IMWPGxPbt22P27NnR0tISs2bN2ukpUfQunZm191qxYkU899xz7b6dn8u6tutX\nuuqa5ubmbM6cOdmxxx6bHXfccdnf//3ft7v/5JNPbrt25Hv98pe/7HAd0yzLsmeeeSY744wzsurq\n6uziiy927T/adHbW1qxZk5133nnZuHHjsjPPPDNbuHBhu8fPnz8/O/nkk7Nx48Zl5513XrZy5cpu\neR2kqb6+Pps1a1Y2YcKE7KMf/Wj2L//yL233HXHEEe2uobts2bLsk5/8ZDZ+/PhsxowZ2SuvvNJu\nW48++mh20kknZRMmTMi+/OUvZ5s3b+6210H68pq1hoaGbM6cOdnUqVOz6urq7Etf+lK2cePGbn0t\npK0zs9bqkUce2ek1wru6rhWyLMvyqm4AANhd3XKOKQAAfBBhCgBAEoQpAABJEKYAACRBmAIAkARh\nCgBAEoQpAABJEKYAACRBmAIAkARhCgBAEoQpAABJ+P+l7GMR0sHvmAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11d694e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "make_uniform_figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def make_normal_figure():\n",
    "    extent = .1\n",
    "    plt_blue = '#4d74ae'  # matplotlib default blue\n",
    "    xs = np.linspace(-extent, extent, 200)\n",
    "\n",
    "    mu = 0\n",
    "    sigma = 0.0003  # really sigma^2\n",
    "    ys = [gaussian(x, mu, sigma) for x in xs]\n",
    "    plt.plot(xs, ys, lw=2, c=plt_blue)\n",
    "\n",
    "    plt.xlim(-extent, extent)\n",
    "    plt.ylim(-.15, 25)\n",
    "    \n",
    "    file_helper.save_figure('normal-init')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11d80ff28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "make_normal_figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
